#include <stdio.h>

int main() {
    int n;
    int arr[100000]; // 由于 n <= 100000，数组大小设为 100000 足够大

    // 读取整数个数 n

    scanf("%d", &n);

    // 读取 n 个整数
   
    for (int i = 0; i < n; i++) 
    {
        scanf("%d", &arr[i]);
    }

    // 冒泡排序，从小到大排列
    for (int i = 0; i < n - 1; i++) 
    {
        for (int j = 0; j < n - 1 - i; j++) 
        {
            if (arr[j] > arr[j + 1]) 
            {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }

    // 输出排序后的去重结果
    printf("去重并排序后的结果是:\n");
    printf("%d", arr[0]); // 打印第一个元素

    // 从第二个元素开始，依次检查是否与前一个元素相同
    for (int i = 1; i < n; i++) 
    {
        if (arr[i] != arr[i - 1]) 
        { // 如果当前元素与前一个元素不同
            printf(" %d", arr[i]);  // 输出该元素
        }
    }
    printf("\n"); // 换行

    return 0;
}





























#include <stdio.h>
#include <stdbool.h>

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        bool swapped = false;  // 标志用于检测这一轮是否有交换

        for (int j = 0; j < n - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                // 交换元素
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                swapped = true;  // 如果发生交换，更新标志
            }
        }

        // 如果没有发生交换，提前结束
        if (!swapped) {
            break;
        }
    }
}

int main() {
    int n;
    scanf("%d", &n);

    int arr[100000];
    for (int i = 0; i < n; i++) 
    {
        scanf("%d", &arr[i]);
    }

    // 去重：将不重复的数存入 `unique` 数组
    int unique[100000], uniqueCount = 0;
    bool isDuplicate[10001] = {0};  // 假设数值不超过10000

    for (int i = 0; i < n; i++) 
    {
        if (!isDuplicate[arr[i]]) 
        {  // 如果arr[i]没有出现过
            isDuplicate[arr[i]] = true;
            unique[uniqueCount++] = arr[i];
        }
    }

    // 对去重后的 `unique` 数组进行排序
    bubbleSort(unique, uniqueCount);

    // 输出排序后的去重结果
    for (int i = 0; i < uniqueCount; i++) 
    {
        printf("%d ", unique[i]);
    }

    return 0;
}










void bubbleSort(int arr[], int n) 
{
for (int i = 0; i < n - 1; i++) 
{
        bool swapped = false;  // 标志用于检测这一轮是否有交换

        for (int j = 0; j < n - 1 - i; j++) 
        {
            if (arr[j] > arr[j + 1]) 
            {
                // 交换元素
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                swapped = true;  // 如果发生交换，更新标志
            }
        }

        // 如果没有发生交换，提前结束
        if (!swapped) 
        {
            break;
        }
    }
}